package com.zjl.redis.第05章_redis的多环境部署;

/**
 * 当旧主服务器没了后 新主登基
 * 当旧主服务器上线后 旧主变成 从服务器
 *
 * 当一个主从配置中的master失效之后，sentinel可 以选举出一个新的master
 * 用于自动接替原master的工作，主从配置中的其他redis服务器自动指向新的master同步数据。
 * 一般建议sentinel采取奇数台，防止某一台sentinel无法连接到master导致误切换
 *
 * 当哨兵说主机挂了之后
 * SDown主观下线(Subjectively Down)
 *      自己一个哨兵
 * ODown客观下线(Objectively Down)
 *      通过哨兵之间的联系多数认为主机下线
 * 选举出领导者哨兵(哨兵中选出兵王)
 *      先选举出一个领导者哨兵节点(兵王)并由该领导者节点,
 *      也即被选举出的兵王进行 failover  (故障迁移)
 *      Raft算法
 *          监视该主节点的所有哨兵都有可能被选为领导者，选举使用的算法是Raft算法;
 *          Raf算法的基本思路是先到先得:
 *              即在一轮选举中，哨兵A向B发送成为领导者的申请，如果B没有同意过其他哨兵，则会同意A成为领导者
 * 由兵王开始推动故障切换流程并选出一个新master，
 *
 *
 *
 *
 * 新主登基
 * 从下线的主服务的所有从服务里面挑选一个从服务，将其转成主服务     有一定的延时，在内部抉择
 * 选择条件依次为:
 * 1、选择优先级靠前的（值越小优先级越高）
 *      优先级在redis.conf中
 *       slave-priority 100
 *    或 replica-priority 100
 * 2、选择偏移量最大的
 *      偏移量是指获得原主数据最多的
 * 3、选择runid最小的从服务
 *      每个redis实例启动后都会随机生成一个40位的runid
 *
 *
 */
public class B5_哨兵的选举机制 {

}
